<?php

namespace app\admin\controller\kuyou;

use app\common\controller\Backend;
use think\Db;
use Exception;

/**
 * 设置
 * @icon fa fa-circle-o
 */
class UserSets extends Backend
{
    /**
     * Sets模型对象
     * @var \app\admin\model\kuyou\Sets
     */
    protected $model = null;

    public function _initialize()
    {
        parent::_initialize();
        $setData = (new Goods())->getSetData();
        $this->assign('set', $setData['setList']);
        $this->assignconfig('set', $setData['setList']);
        $this->assign('nowmenu', $setData['nowmenu']);

        $this->model = new \app\admin\model\kuyou\UserSets;
        $this->view->assign("typeList", $this->model->getTypeList());
    }

    public function index()
    {
        if ($this->request->isPost()) {
            $params = $this->request->post("row/a");
            if ($params) {

                if (isset($params['type']) && $params['type'] == 2) {
                    $configId = $params['configId'];
                    $config = [];
                    foreach ($configId as $configId_k => $configId_v) {
                        if (!empty($configId_v) && isset($params['config' . $configId_v])) {
                            $config[] = ['id' => $configId_v, 'value' => $params['config' . $configId_v]];
                        }
                    }
                    $result = false;
                    Db::startTrans();
                    try {
                        if ($config) {
                            foreach ($config as $config_k => $config_v) {
                                $result = Db::name('kuyou_user_config')->where(['id' => $config_v['id']])->update(['value' => $config_v['value']]);
                            }
                        }
                        Db::commit();
                    } catch (Exception $e) {
                        Db::rollback();
                        $this->error($e->getMessage());
                    }
                } else {
                    foreach ($params as $params_k => $params_v) {
                        if (isset($params_v['value'])) {
                            if (is_array($params_v['value'])) {
                                $params[$params_k]['value'] = implode(',', $params_v['value']);
                            }
                            if (!isset($params_v['is_checked'])) {
                                $params[$params_k]['is_checked'] = 0;
                            }
                        } else {
                            $params[$params_k]['value'] = '';
                            $params[$params_k]['is_checked'] = 0;
                        }
                    }
                    foreach ($params as $params_k => $params_v) {
                        $params[$params_k] = $params_v;
                    }
                    $result = false;
                    Db::startTrans();
                    try {
                        $result = $this->model->saveAll($params);
                        $config = Db::name('kuyou_user_sets')->where('shop_id', $this->shop_id)->select();
                        foreach ($config as $params_k => $params_v) {
                            if ($params_v['name'] == 'appid') {
                                Db::name('kuyou_user_config')->where('shop_id', $this->shop_id)->where(['name' => 'appid'])->update(['value' => $params_v['value']]);
                            }
                            if ($params_v['name'] == 'appsecret') {
                                Db::name('kuyou_user_config')->where('shop_id', $this->shop_id)->where(['name' => 'appsecret'])->update(['value' => $params_v['value']]);
                            }
                        }
                        Db::commit();
                    } catch (Exception $e) {
                        Db::rollback();
                        $this->error($e->getMessage());
                    }
                }
                if (isset($result) && $result !== false) {
                    $this->success();
                } else {
                    $this->error(__('No rows were inserted'));
                }
            }
            $this->error(__('Parameter %s can not be empty', ''));
        }
        $sets = Db::name('kuyou_user_sets')->where('shop_id', $this->shop_id)->select();
        $this->view->assign("sets", $sets);

        $user_config = Db::name('kuyou_user_config')->where('shop_id', $this->shop_id)->select();
        foreach ($user_config as $user_config_k => $user_config_v) {
            if ($user_config_k <= 2) {
                $user_config[] = $user_config_v;
                unset($user_config[$user_config_k]);
            }
        }
        $this->view->assign("user_config", $user_config);
        return $this->view->fetch();
    }

}
